﻿var Zepto = function () {
    function t(t) {
        return null == t ? String(t) : Y[J.call(t)] || "object"
    }
    function e(e) {
        return "function" == t(e)
    }
    function n(t) {
        return null != t && t == t.window
    }
    function r(t) {
        return null != t && t.nodeType == t.DOCUMENT_NODE
    }
    function i(e) {
        return "object" == t(e)
    }
    function o(t) {
        return i(t) && !n(t) && Object.getPrototypeOf(t) == Object.prototype
    }
    function a(t) {
        return "number" == typeof t.length
    }
    function s(t) {
        return M.call(t, function (t) {
            return null != t
        })
    }
    function u(t) {
        return t.length > 0 ? j.fn.concat.apply([], t) : t
    }
    function c(t) {
        return t.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase()
    }
    function l(t) {
        return t in $ ? $[t] : $[t] = new RegExp("(^|\\s)" + t + "(\\s|$)")
    }
    function f(t, e) {
        return "number" != typeof e || Z[c(t)] ? e : e + "px"
    }
    function h(t) {
        var e, n;
        return L[t] || (e = A.createElement(t), A.body.appendChild(e), n = getComputedStyle(e, "").getPropertyValue("display"), e.parentNode.removeChild(e), "none" == n && (n = "block"), L[t] = n), L[t]
    }
    function p(t) {
        return "children" in t ? D.call(t.children) : j.map(t.childNodes, function (t) {
            return 1 == t.nodeType ? t : void 0
        })
    }
    function d(t, e) {
        var n, r = t ? t.length : 0;
        for (n = 0; r > n; n++) this[n] = t[n];
        this.length = r, this.selector = e || ""
    }
    function m(t, e, n) {
        for (T in e) n && (o(e[T]) || Q(e[T])) ? (o(e[T]) && !o(t[T]) && (t[T] = {}), Q(e[T]) && !Q(t[T]) && (t[T] = []), m(t[T], e[T], n)) : e[T] !== E && (t[T] = e[T])
    }
    function v(t, e) {
        return null == e ? j(t) : j(t).filter(e)
    }
    function g(t, n, r, i) {
        return e(n) ? n.call(t, r, i) : n
    }
    function y(t, e, n) {
        null == n ? t.removeAttribute(e) : t.setAttribute(e, n)
    }
    function x(t, e) {
        var n = t.className || "",
            r = n && n.baseVal !== E;
        return e === E ? r ? n.baseVal : n : void (r ? n.baseVal = e : t.className = e)
    }
    function w(t) {
        try {
            return t ? "true" == t || ("false" == t ? !1 : "null" == t ? null : +t + "" == t ? +t : /^[\[\{]/.test(t) ? j.parseJSON(t) : t) : t
        } catch (e) {
            return t
        }
    }
    function b(t, e) {
        e(t);
        for (var n = 0, r = t.childNodes.length; r > n; n++) b(t.childNodes[n], e)
    }
    var E, T, j, S, N, C, P = [],
        O = P.concat,
        M = P.filter,
        D = P.slice,
        A = window.document,
        L = {},
        $ = {},
        Z = {
            "column-count": 1,
            columns: 1,
            "font-weight": 1,
            "line-height": 1,
            opacity: 1,
            "z-index": 1,
            zoom: 1
        },
        R = /^\s*<(\w+|!)[^>]*>/,
        F = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
        k = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
        q = /^(?:body|html)$/i,
        H = /([A-Z])/g,
        _ = ["val", "css", "html", "text", "data", "width", "height", "offset"],
        z = ["after", "prepend", "before", "append"],
        I = A.createElement("table"),
        U = A.createElement("tr"),
        X = {
            tr: A.createElement("tbody"),
            tbody: I,
            thead: I,
            tfoot: I,
            td: U,
            th: U,
            "*": A.createElement("div")
        },
        B = /complete|loaded|interactive/,
        V = /^[\w-]*$/,
        Y = {},
        J = Y.toString,
        G = {},
        W = A.createElement("div"),
        K = {
            tabindex: "tabIndex",
            readonly: "readOnly",
            "for": "htmlFor",
            "class": "className",
            maxlength: "maxLength",
            cellspacing: "cellSpacing",
            cellpadding: "cellPadding",
            rowspan: "rowSpan",
            colspan: "colSpan",
            usemap: "useMap",
            frameborder: "frameBorder",
            contenteditable: "contentEditable"
        },
        Q = Array.isArray ||
    function (t) {
        return t instanceof Array
    };
    return G.matches = function (t, e) {
        if (!e || !t || 1 !== t.nodeType) return !1;
        var n = t.webkitMatchesSelector || t.mozMatchesSelector || t.oMatchesSelector || t.matchesSelector;
        if (n) return n.call(t, e);
        var r, i = t.parentNode,
            o = !i;
        return o && (i = W).appendChild(t), r = ~G.qsa(i, e).indexOf(t), o && W.removeChild(t), r
    }, N = function (t) {
        return t.replace(/-+(.)?/g, function (t, e) {
            return e ? e.toUpperCase() : ""
        })
    }, C = function (t) {
        return M.call(t, function (e, n) {
            return t.indexOf(e) == n
        })
    }, G.fragment = function (t, e, n) {
        var r, i, a;
        return F.test(t) && (r = j(A.createElement(RegExp.$1))), r || (t.replace && (t = t.replace(k, "<$1></$2>")), e === E && (e = R.test(t) && RegExp.$1), e in X || (e = "*"), a = X[e], a.innerHTML = "" + t, r = j.each(D.call(a.childNodes), function () {
            a.removeChild(this)
        })), o(n) && (i = j(r), j.each(n, function (t, e) {
            _.indexOf(t) > -1 ? i[t](e) : i.attr(t, e)
        })), r
    }, G.Z = function (t, e) {
        return new d(t, e)
    }, G.isZ = function (t) {
        return t instanceof G.Z
    }, G.init = function (t, n) {
        var r;
        if (!t) return G.Z();
        if ("string" == typeof t) if (t = t.trim(), "<" == t[0] && R.test(t)) r = G.fragment(t, RegExp.$1, n), t = null;
        else {
            if (n !== E) return j(n).find(t);
            r = G.qsa(A, t)
        } else {
            if (e(t)) return j(A).ready(t);
            if (G.isZ(t)) return t;
            if (Q(t)) r = s(t);
            else if (i(t)) r = [t], t = null;
            else if (R.test(t)) r = G.fragment(t.trim(), RegExp.$1, n), t = null;
            else {
                if (n !== E) return j(n).find(t);
                r = G.qsa(A, t)
            }
        }
        return G.Z(r, t)
    }, j = function (t, e) {
        return G.init(t, e)
    }, j.extend = function (t) {
        var e, n = D.call(arguments, 1);
        return "boolean" == typeof t && (e = t, t = n.shift()), n.forEach(function (n) {
            m(t, n, e)
        }), t
    }, G.qsa = function (t, e) {
        var n, r = "#" == e[0],
            i = !r && "." == e[0],
            o = r || i ? e.slice(1) : e,
            a = V.test(o);
        return t.getElementById && a && r ? (n = t.getElementById(o)) ? [n] : [] : 1 !== t.nodeType && 9 !== t.nodeType && 11 !== t.nodeType ? [] : D.call(a && !r && t.getElementsByClassName ? i ? t.getElementsByClassName(o) : t.getElementsByTagName(e) : t.querySelectorAll(e))
    }, j.contains = A.documentElement.contains ?
    function (t, e) {
        return t !== e && t.contains(e)
    } : function (t, e) {
        for (; e && (e = e.parentNode) ;) if (e === t) return !0;
        return !1
    }, j.type = t, j.isFunction = e, j.isWindow = n, j.isArray = Q, j.isPlainObject = o, j.isEmptyObject = function (t) {
        var e;
        for (e in t) return !1;
        return !0
    }, j.inArray = function (t, e, n) {
        return P.indexOf.call(e, t, n)
    }, j.camelCase = N, j.trim = function (t) {
        return null == t ? "" : String.prototype.trim.call(t)
    }, j.uuid = 0, j.support = {}, j.expr = {}, j.noop = function () { }, j.map = function (t, e) {
        var n, r, i, o = [];
        if (a(t)) for (r = 0; r < t.length; r++) n = e(t[r], r), null != n && o.push(n);
        else for (i in t) n = e(t[i], i), null != n && o.push(n);
        return u(o)
    }, j.each = function (t, e) {
        var n, r;
        if (a(t)) {
            for (n = 0; n < t.length; n++) if (e.call(t[n], n, t[n]) === !1) return t
        } else for (r in t) if (e.call(t[r], r, t[r]) === !1) return t;
        return t
    }, j.grep = function (t, e) {
        return M.call(t, e)
    }, window.JSON && (j.parseJSON = JSON.parse), j.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (t, e) {
        Y["[object " + e + "]"] = e.toLowerCase()
    }), j.fn = {
        constructor: G.Z,
        length: 0,
        forEach: P.forEach,
        reduce: P.reduce,
        push: P.push,
        sort: P.sort,
        splice: P.splice,
        indexOf: P.indexOf,
        concat: function () {
            var t, e, n = [];
            for (t = 0; t < arguments.length; t++) e = arguments[t], n[t] = G.isZ(e) ? e.toArray() : e;
            return O.apply(G.isZ(this) ? this.toArray() : this, n)
        },
        map: function (t) {
            return j(j.map(this, function (e, n) {
                return t.call(e, n, e)
            }))
        },
        slice: function () {
            return j(D.apply(this, arguments))
        },
        ready: function (t) {
            return B.test(A.readyState) && A.body ? t(j) : A.addEventListener("DOMContentLoaded", function () {
                t(j)
            }, !1), this
        },
        get: function (t) {
            return t === E ? D.call(this) : this[t >= 0 ? t : t + this.length]
        },
        toArray: function () {
            return this.get()
        },
        size: function () {
            return this.length
        },
        remove: function () {
            return this.each(function () {
                null != this.parentNode && this.parentNode.removeChild(this)
            })
        },
        each: function (t) {
            return P.every.call(this, function (e, n) {
                return t.call(e, n, e) !== !1
            }), this
        },
        filter: function (t) {
            return e(t) ? this.not(this.not(t)) : j(M.call(this, function (e) {
                return G.matches(e, t)
            }))
        },
        add: function (t, e) {
            return j(C(this.concat(j(t, e))))
        },
        is: function (t) {
            return this.length > 0 && G.matches(this[0], t)
        },
        not: function (t) {
            var n = [];
            if (e(t) && t.call !== E) this.each(function (e) {
                t.call(this, e) || n.push(this)
            });
            else {
                var r = "string" == typeof t ? this.filter(t) : a(t) && e(t.item) ? D.call(t) : j(t);
                this.forEach(function (t) {
                    r.indexOf(t) < 0 && n.push(t)
                })
            }
            return j(n)
        },
        has: function (t) {
            return this.filter(function () {
                return i(t) ? j.contains(this, t) : j(this).find(t).size()
            })
        },
        eq: function (t) {
            return -1 === t ? this.slice(t) : this.slice(t, +t + 1)
        },
        first: function () {
            var t = this[0];
            return t && !i(t) ? t : j(t)
        },
        last: function () {
            var t = this[this.length - 1];
            return t && !i(t) ? t : j(t)
        },
        find: function (t) {
            var e, n = this;
            return e = t ? "object" == typeof t ? j(t).filter(function () {
                var t = this;
                return P.some.call(n, function (e) {
                    return j.contains(e, t)
                })
            }) : 1 == this.length ? j(G.qsa(this[0], t)) : this.map(function () {
                return G.qsa(this, t)
            }) : j()
        },
        closest: function (t, e) {
            var n = this[0],
                i = !1;
            for ("object" == typeof t && (i = j(t)) ; n && !(i ? i.indexOf(n) >= 0 : G.matches(n, t)) ;) n = n !== e && !r(n) && n.parentNode;
            return j(n)
        },
        parents: function (t) {
            for (var e = [], n = this; n.length > 0;) n = j.map(n, function (t) {
                return (t = t.parentNode) && !r(t) && e.indexOf(t) < 0 ? (e.push(t), t) : void 0
            });
            return v(e, t)
        },
        parent: function (t) {
            return v(C(this.pluck("parentNode")), t)
        },
        children: function (t) {
            return v(this.map(function () {
                return p(this)
            }), t)
        },
        contents: function () {
            return this.map(function () {
                return D.call(this.childNodes)
            })
        },
        siblings: function (t) {
            return v(this.map(function (t, e) {
                return M.call(p(e.parentNode), function (t) {
                    return t !== e
                })
            }), t)
        },
        empty: function () {
            return this.each(function () {
                this.innerHTML = ""
            })
        },
        pluck: function (t) {
            return j.map(this, function (e) {
                return e[t]
            })
        },
        show: function () {
            return this.each(function () {
                "none" == this.style.display && (this.style.display = ""), "none" == getComputedStyle(this, "").getPropertyValue("display") && (this.style.display = h(this.nodeName))
            })
        },
        replaceWith: function (t) {
            return this.before(t).remove()
        },
        wrap: function (t) {
            var n = e(t);
            if (this[0] && !n) var r = j(t).get(0),
                i = r.parentNode || this.length > 1;
            return this.each(function (e) {
                j(this).wrapAll(n ? t.call(this, e) : i ? r.cloneNode(!0) : r)
            })
        },
        wrapAll: function (t) {
            if (this[0]) {
                j(this[0]).before(t = j(t));
                for (var e;
                (e = t.children()).length;) t = e.first();
                j(t).append(this)
            }
            return this
        },
        wrapInner: function (t) {
            var n = e(t);
            return this.each(function (e) {
                var r = j(this),
                    i = r.contents(),
                    o = n ? t.call(this, e) : t;
                i.length ? i.wrapAll(o) : r.append(o)
            })
        },
        unwrap: function () {
            return this.parent().each(function () {
                j(this).replaceWith(j(this).children())
            }), this
        },
        clone: function () {
            return this.map(function () {
                return this.cloneNode(!0)
            })
        },
        hide: function () {
            return this.css("display", "none")
        },
        toggle: function (t) {
            return this.each(function () {
                var e = j(this);
                (t === E ? "none" == e.css("display") : t) ? e.show() : e.hide()
            })
        },
        prev: function (t) {
            return j(this.pluck("previousElementSibling")).filter(t || "*")
        },
        next: function (t) {
            return j(this.pluck("nextElementSibling")).filter(t || "*")
        },
        html: function (t) {
            return 0 in arguments ? this.each(function (e) {
                var n = this.innerHTML;
                j(this).empty().append(g(this, t, e, n))
            }) : 0 in this ? this[0].innerHTML : null
        },
        text: function (t) {
            return 0 in arguments ? this.each(function (e) {
                var n = g(this, t, e, this.textContent);
                this.textContent = null == n ? "" : "" + n
            }) : 0 in this ? this[0].textContent : null
        },
        attr: function (t, e) {
            var n;
            return "string" != typeof t || 1 in arguments ? this.each(function (n) {
                if (1 === this.nodeType) if (i(t)) for (T in t) y(this, T, t[T]);
                else y(this, t, g(this, e, n, this.getAttribute(t)))
            }) : this.length && 1 === this[0].nodeType ? !(n = this[0].getAttribute(t)) && t in this[0] ? this[0][t] : n : E
        },
        removeAttr: function (t) {
            return this.each(function () {
                1 === this.nodeType && t.split(" ").forEach(function (t) {
                    y(this, t)
                }, this)
            })
        },
        prop: function (t, e) {
            return t = K[t] || t, 1 in arguments ? this.each(function (n) {
                this[t] = g(this, e, n, this[t])
            }) : this[0] && this[0][t]
        },
        data: function (t, e) {
            var n = "data-" + t.replace(H, "-$1").toLowerCase(),
                r = 1 in arguments ? this.attr(n, e) : this.attr(n);
            return null !== r ? w(r) : E
        },
        val: function (t) {
            return 0 in arguments ? this.each(function (e) {
                this.value = g(this, t, e, this.value)
            }) : this[0] && (this[0].multiple ? j(this[0]).find("option").filter(function () {
                return this.selected
            }).pluck("value") : this[0].value)
        },
        offset: function (t) {
            if (t) return this.each(function (e) {
                var n = j(this),
                    r = g(this, t, e, n.offset()),
                    i = n.offsetParent().offset(),
                    o = {
                        top: r.top - i.top,
                        left: r.left - i.left
                    };
                "static" == n.css("position") && (o.position = "relative"), n.css(o)
            });
            if (!this.length) return null;
            var e = this[0].getBoundingClientRect();
            return {
                left: e.left + window.pageXOffset,
                top: e.top + window.pageYOffset,
                width: Math.round(e.width),
                height: Math.round(e.height)
            }
        },
        css: function (e, n) {
            if (arguments.length < 2) {
                var r, i = this[0];
                if (!i) return;
                if (r = getComputedStyle(i, ""), "string" == typeof e) return i.style[N(e)] || r.getPropertyValue(e);
                if (Q(e)) {
                    var o = {};
                    return j.each(e, function (t, e) {
                        o[e] = i.style[N(e)] || r.getPropertyValue(e)
                    }), o
                }
            }
            var a = "";
            if ("string" == t(e)) n || 0 === n ? a = c(e) + ":" + f(e, n) : this.each(function () {
                this.style.removeProperty(c(e))
            });
            else for (T in e) e[T] || 0 === e[T] ? a += c(T) + ":" + f(T, e[T]) + ";" : this.each(function () {
                this.style.removeProperty(c(T))
            });
            return this.each(function () {
                this.style.cssText += ";" + a
            })
        },
        index: function (t) {
            return t ? this.indexOf(j(t)[0]) : this.parent().children().indexOf(this[0])
        },
        hasClass: function (t) {
            return t ? P.some.call(this, function (t) {
                return this.test(x(t))
            }, l(t)) : !1
        },
        addClass: function (t) {
            return t ? this.each(function (e) {
                if ("className" in this) {
                    S = [];
                    var n = x(this),
                        r = g(this, t, e, n);
                    r.split(/\s+/g).forEach(function (t) {
                        j(this).hasClass(t) || S.push(t)
                    }, this), S.length && x(this, n + (n ? " " : "") + S.join(" "))
                }
            }) : this
        },
        removeClass: function (t) {
            return this.each(function (e) {
                if ("className" in this) {
                    if (t === E) return x(this, "");
                    S = x(this), g(this, t, e, S).split(/\s+/g).forEach(function (t) {
                        S = S.replace(l(t), " ")
                    }), x(this, S.trim())
                }
            })
        },
        toggleClass: function (t, e) {
            return t ? this.each(function (n) {
                var r = j(this),
                    i = g(this, t, n, x(this));
                i.split(/\s+/g).forEach(function (t) {
                    (e === E ? !r.hasClass(t) : e) ? r.addClass(t) : r.removeClass(t)
                })
            }) : this
        },
        scrollTop: function (t) {
            if (this.length) {
                var e = "scrollTop" in this[0];
                return t === E ? e ? this[0].scrollTop : this[0].pageYOffset : this.each(e ?
                function () {
                    this.scrollTop = t
                } : function () {
                    this.scrollTo(this.scrollX, t)
                })
            }
        },
        scrollLeft: function (t) {
            if (this.length) {
                var e = "scrollLeft" in this[0];
                return t === E ? e ? this[0].scrollLeft : this[0].pageXOffset : this.each(e ?
                function () {
                    this.scrollLeft = t
                } : function () {
                    this.scrollTo(t, this.scrollY)
                })
            }
        },
        position: function () {
            if (this.length) {
                var t = this[0],
                    e = this.offsetParent(),
                    n = this.offset(),
                    r = q.test(e[0].nodeName) ? {
                        top: 0,
                        left: 0
                    } : e.offset();
                return n.top -= parseFloat(j(t).css("margin-top")) || 0, n.left -= parseFloat(j(t).css("margin-left")) || 0, r.top += parseFloat(j(e[0]).css("border-top-width")) || 0, r.left += parseFloat(j(e[0]).css("border-left-width")) || 0, {
                    top: n.top - r.top,
                    left: n.left - r.left
                }
            }
        },
        offsetParent: function () {
            return this.map(function () {
                for (var t = this.offsetParent || A.body; t && !q.test(t.nodeName) && "static" == j(t).css("position") ;) t = t.offsetParent;
                return t
            })
        }
    }, j.fn.detach = j.fn.remove, ["width", "height"].forEach(function (t) {
        var e = t.replace(/./, function (t) {
            return t[0].toUpperCase()
        });
        j.fn[t] = function (i) {
            var o, a = this[0];
            return i === E ? n(a) ? a["inner" + e] : r(a) ? a.documentElement["scroll" + e] : (o = this.offset()) && o[t] : this.each(function (e) {
                a = j(this), a.css(t, g(this, i, e, a[t]()))
            })
        }
    }), z.forEach(function (e, n) {
        var r = n % 2;
        j.fn[e] = function () {
            var e, i, o = j.map(arguments, function (n) {
                return e = t(n), "object" == e || "array" == e || null == n ? n : G.fragment(n)
            }),
                a = this.length > 1;
            return o.length < 1 ? this : this.each(function (t, e) {
                i = r ? e : e.parentNode, e = 0 == n ? e.nextSibling : 1 == n ? e.firstChild : 2 == n ? e : null;
                var s = j.contains(A.documentElement, i);
                o.forEach(function (t) {
                    if (a) t = t.cloneNode(!0);
                    else if (!i) return j(t).remove();
                    i.insertBefore(t, e), s && b(t, function (t) {
                        null == t.nodeName || "SCRIPT" !== t.nodeName.toUpperCase() || t.type && "text/javascript" !== t.type || t.src || window.eval.call(window, t.innerHTML)
                    })
                })
            })
        }, j.fn[r ? e + "To" : "insert" + (n ? "Before" : "After")] = function (t) {
            return j(t)[e](this), this
        }
    }), G.Z.prototype = d.prototype = j.fn, G.uniq = C, G.deserializeValue = w, j.zepto = G, j
}();
window.Zepto = Zepto, void 0 === window.$ && (window.$ = Zepto), function (t) {
    function e(t) {
        return t._zid || (t._zid = h++)
    }
    function n(t, n, o, a) {
        if (n = r(n), n.ns) var s = i(n.ns);
        return (v[e(t)] || []).filter(function (t) {
            return !(!t || n.e && t.e != n.e || n.ns && !s.test(t.ns) || o && e(t.fn) !== e(o) || a && t.sel != a)
        })
    }
    function r(t) {
        var e = ("" + t).split(".");
        return {
            e: e[0],
            ns: e.slice(1).sort().join(" ")
        }
    }
    function i(t) {
        return new RegExp("(?:^| )" + t.replace(" ", " .* ?") + "(?: |$)")
    }
    function o(t, e) {
        return t.del && !y && t.e in x || !!e
    }
    function a(t) {
        return w[t] || y && x[t] || t
    }
    function s(n, i, s, u, l, h, p) {
        var d = e(n),
			m = v[d] || (v[d] = []);
        i.split(/\s/).forEach(function (e) {
            if ("ready" == e) return t(document).ready(s);
            var i = r(e);
            i.fn = s, i.sel = l, i.e in w && (s = function (e) {
                var n = e.relatedTarget;
                return !n || n !== this && !t.contains(this, n) ? i.fn.apply(this, arguments) : void 0
            }), i.del = h;
            var d = h || s;
            i.proxy = function (t) {
                if (t = c(t), !t.isImmediatePropagationStopped()) {
                    t.data = u;
                    var e = d.apply(n, t._args == f ? [t] : [t].concat(t._args));
                    return e === !1 && (t.preventDefault(), t.stopPropagation()), e
                }
            }, i.i = m.length, m.push(i), "addEventListener" in n && n.addEventListener(a(i.e), i.proxy, o(i, p))
        })
    }
    function u(t, r, i, s, u) {
        var c = e(t);
        (r || "").split(/\s/).forEach(function (e) {
            n(t, e, i, s).forEach(function (e) {
                delete v[c][e.i], "removeEventListener" in t && t.removeEventListener(a(e.e), e.proxy, o(e, u))
            })
        })
    }
    function c(e, n) {
        return (n || !e.isDefaultPrevented) && (n || (n = e), t.each(j, function (t, r) {
            var i = n[t];
            e[t] = function () {
                return this[r] = b, i && i.apply(n, arguments)
            }, e[r] = E
        }), (n.defaultPrevented !== f ? n.defaultPrevented : "returnValue" in n ? n.returnValue === !1 : n.getPreventDefault && n.getPreventDefault()) && (e.isDefaultPrevented = b)), e
    }
    function l(t) {
        var e, n = {
            originalEvent: t
        };
        for (e in t) T.test(e) || t[e] === f || (n[e] = t[e]);
        return c(n, t)
    }
    var f, h = 1,
		p = Array.prototype.slice,
		d = t.isFunction,
		m = function (t) {
		    return "string" == typeof t
		},
		v = {},
		g = {},
		y = "onfocusin" in window,
		x = {
		    focus: "focusin",
		    blur: "focusout"
		},
		w = {
		    mouseenter: "mouseover",
		    mouseleave: "mouseout"
		};
    g.click = g.mousedown = g.mouseup = g.mousemove = "MouseEvents", t.event = {
        add: s,
        remove: u
    }, t.proxy = function (n, r) {
        var i = 2 in arguments && p.call(arguments, 2);
        if (d(n)) {
            var o = function () {
                return n.apply(r, i ? i.concat(p.call(arguments)) : arguments)
            };
            return o._zid = e(n), o
        }
        if (m(r)) return i ? (i.unshift(n[r], n), t.proxy.apply(null, i)) : t.proxy(n[r], n);
        throw new TypeError("expected function")
    }, t.fn.bind = function (t, e, n) {
        return this.on(t, e, n)
    }, t.fn.unbind = function (t, e) {
        return this.off(t, e)
    }, t.fn.one = function (t, e, n, r) {
        return this.on(t, e, n, r, 1)
    };
    var b = function () {
        return !0
    },
		E = function () {
		    return !1
		},
		T = /^([A-Z]|returnValue$|layer[XY]$)/,
		j = {
		    preventDefault: "isDefaultPrevented",
		    stopImmediatePropagation: "isImmediatePropagationStopped",
		    stopPropagation: "isPropagationStopped"
		};
    t.fn.delegate = function (t, e, n) {
        return this.on(e, t, n)
    }, t.fn.undelegate = function (t, e, n) {
        return this.off(e, t, n)
    }, t.fn.live = function (e, n) {
        return t(document.body).delegate(this.selector, e, n), this
    }, t.fn.die = function (e, n) {
        return t(document.body).undelegate(this.selector, e, n), this
    }, t.fn.on = function (e, n, r, i, o) {
        var a, c, h = this;
        return e && !m(e) ? (t.each(e, function (t, e) {
            h.on(t, n, r, e, o)
        }), h) : (m(n) || d(i) || i === !1 || (i = r, r = n, n = f), (d(r) || r === !1) && (i = r, r = f), i === !1 && (i = E), h.each(function (f, h) {
            o && (a = function (t) {
                return u(h, t.type, i), i.apply(this, arguments)
            }), n && (c = function (e) {
                var r, o = t(e.target).closest(n, h).get(0);
                return o && o !== h ? (r = t.extend(l(e), {
                    currentTarget: o,
                    liveFired: h
                }), (a || i).apply(o, [r].concat(p.call(arguments, 1)))) : void 0
            }), s(h, e, i, r, n, c || a)
        }))
    }, t.fn.off = function (e, n, r) {
        var i = this;
        return e && !m(e) ? (t.each(e, function (t, e) {
            i.off(t, n, e)
        }), i) : (m(n) || d(r) || r === !1 || (r = n, n = f), r === !1 && (r = E), i.each(function () {
            u(this, e, r, n)
        }))
    }, t.fn.trigger = function (e, n) {
        return e = m(e) || t.isPlainObject(e) ? t.Event(e) : c(e), e._args = n, this.each(function () {
            e.type in x && "function" == typeof this[e.type] ? this[e.type]() : "dispatchEvent" in this ? this.dispatchEvent(e) : t(this).triggerHandler(e, n)
        })
    }, t.fn.triggerHandler = function (e, r) {
        var i, o;
        return this.each(function (a, s) {
            i = l(m(e) ? t.Event(e) : e), i._args = r, i.target = s, t.each(n(s, e.type || e), function (t, e) {
                return o = e.proxy(i), i.isImmediatePropagationStopped() ? !1 : void 0
            })
        }), o
    }, "focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function (e) {
        t.fn[e] = function (t) {
            return 0 in arguments ? this.bind(e, t) : this.trigger(e)
        }
    }), t.Event = function (t, e) {
        m(t) || (e = t, t = e.type);
        var n = document.createEvent(g[t] || "Events"),
			r = !0;
        if (e) for (var i in e) "bubbles" == i ? r = !!e[i] : n[i] = e[i];
        return n.initEvent(t, r, !0), c(n)
    }
}(Zepto), function (t) {
    function e(e, n, r) {
        var i = t.Event(n);
        return t(e).trigger(i, r), !i.isDefaultPrevented()
    }
    function n(t, n, r, i) {
        return t.global ? e(n || y, r, i) : void 0
    }
    function r(e) {
        e.global && 0 === t.active++ && n(e, null, "ajaxStart")
    }
    function i(e) {
        e.global && !--t.active && n(e, null, "ajaxStop")
    }
    function o(t, e) {
        var r = e.context;
        return e.beforeSend.call(r, t, e) === !1 || n(e, r, "ajaxBeforeSend", [t, e]) === !1 ? !1 : void n(e, r, "ajaxSend", [t, e])
    }
    function a(t, e, r, i) {
        var o = r.context,
			a = "success";
        r.success.call(o, t, a, e), i && i.resolveWith(o, [t, a, e]), n(r, o, "ajaxSuccess", [e, r, t]), u(a, e, r)
    }
    function s(t, e, r, i, o) {
        var a = i.context;
        i.error.call(a, r, e, t), o && o.rejectWith(a, [r, e, t]), n(i, a, "ajaxError", [r, i, t || e]), u(e, r, i)
    }
    function u(t, e, r) {
        var o = r.context;
        r.complete.call(o, e, t), n(r, o, "ajaxComplete", [e, r]), i(r)
    }
    function c() { }
    function l(t) {
        return t && (t = t.split(";", 2)[0]), t && (t == T ? "html" : t == E ? "json" : w.test(t) ? "script" : b.test(t) && "xml") || "text"
    }
    function f(t, e) {
        return "" == e ? t : (t + "&" + e).replace(/[&?]{1,2}/, "?")
    }
    function h(e) {
        e.processData && e.data && "string" != t.type(e.data) && (e.data = t.param(e.data, e.traditional)), !e.data || e.type && "GET" != e.type.toUpperCase() || (e.url = f(e.url, e.data), e.data = void 0)
    }
    function p(e, n, r, i) {
        return t.isFunction(n) && (i = r, r = n, n = void 0), t.isFunction(r) || (i = r, r = void 0), {
            url: e,
            data: n,
            success: r,
            dataType: i
        }
    }
    function d(e, n, r, i) {
        var o, a = t.isArray(n),
			s = t.isPlainObject(n);
        t.each(n, function (n, u) {
            o = t.type(u), i && (n = r ? i : i + "[" + (s || "object" == o || "array" == o ? n : "") + "]"), !i && a ? e.add(u.name, u.value) : "array" == o || !r && "object" == o ? d(e, u, r, n) : e.add(n, u)
        })
    }
    var m, v, g = 0,
		y = window.document,
		x = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
		w = /^(?:text|application)\/javascript/i,
		b = /^(?:text|application)\/xml/i,
		E = "application/json",
		T = "text/html",
		j = /^\s*$/,
		S = y.createElement("a");
    S.href = window.location.href, t.active = 0, t.ajaxJSONP = function (e, n) {
        if (!("type" in e)) return t.ajax(e);
        var r, i, u = e.jsonpCallback,
			c = (t.isFunction(u) ? u() : u) || "jsonp" + ++g,
			l = y.createElement("script"),
			f = window[c],
			h = function (e) {
			    t(l).triggerHandler("error", e || "abort")
			},
			p = {
			    abort: h
			};
        return n && n.promise(p), t(l).on("load error", function (o, u) {
            clearTimeout(i), t(l).off().remove(), "error" != o.type && r ? a(r[0], p, e, n) : s(null, u || "error", p, e, n), window[c] = f, r && t.isFunction(f) && f(r[0]), f = r = void 0
        }), o(p, e) === !1 ? (h("abort"), p) : (window[c] = function () {
            r = arguments
        }, l.src = e.url.replace(/\?(.+)=\?/, "?$1=" + c), y.head.appendChild(l), e.timeout > 0 && (i = setTimeout(function () {
            h("timeout")
        }, e.timeout)), p)
    }, t.ajaxSettings = {
        type: "GET",
        beforeSend: c,
        success: c,
        error: c,
        complete: c,
        context: null,
        global: !0,
        xhr: function () {
            return new window.XMLHttpRequest
        },
        accepts: {
            script: "text/javascript, application/javascript, application/x-javascript",
            json: E,
            xml: "application/xml, text/xml",
            html: T,
            text: "text/plain"
        },
        crossDomain: !1,
        timeout: 0,
        processData: !0,
        cache: !0
    }, t.ajax = function (e) {
        var n, i = t.extend({}, e || {}),
			u = t.Deferred && t.Deferred();
        for (m in t.ajaxSettings) void 0 === i[m] && (i[m] = t.ajaxSettings[m]);
        r(i), i.crossDomain || (n = y.createElement("a"), n.href = i.url, n.href = n.href, i.crossDomain = S.protocol + "//" + S.host != n.protocol + "//" + n.host), i.url || (i.url = window.location.toString()), h(i);
        var p = i.dataType,
			d = /\?.+=\?/.test(i.url);
        if (d && (p = "jsonp"), i.cache !== !1 && (e && e.cache === !0 || "script" != p && "jsonp" != p) || (i.url = f(i.url, "_=" + Date.now())), "jsonp" == p) return d || (i.url = f(i.url, i.jsonp ? i.jsonp + "=?" : i.jsonp === !1 ? "" : "callback=?")), t.ajaxJSONP(i, u);
        var g, x = i.accepts[p],
			w = {},
			b = function (t, e) {
			    w[t.toLowerCase()] = [t, e]
			},
			E = /^([\w-]+:)\/\//.test(i.url) ? RegExp.$1 : window.location.protocol,
			T = i.xhr(),
			N = T.setRequestHeader;
        if (u && u.promise(T), i.crossDomain || b("X-Requested-With", "XMLHttpRequest"), b("Accept", x || "*/*"), (x = i.mimeType || x) && (x.indexOf(",") > -1 && (x = x.split(",", 2)[0]), T.overrideMimeType && T.overrideMimeType(x)), (i.contentType || i.contentType !== !1 && i.data && "GET" != i.type.toUpperCase()) && b("Content-Type", i.contentType || "application/x-www-form-urlencoded"), i.headers) for (v in i.headers) b(v, i.headers[v]);
        if (T.setRequestHeader = b, T.onreadystatechange = function () {
			if (4 == T.readyState) {
				T.onreadystatechange = c, clearTimeout(g);
				var e, n = !1;
				if (T.status >= 200 && T.status < 300 || 304 == T.status || 0 == T.status && "file:" == E) {
					p = p || l(i.mimeType || T.getResponseHeader("content-type")), e = T.responseText;
					try {
						"script" == p ? (0, eval)(e) : "xml" == p ? e = T.responseXML : "json" == p && (e = j.test(e) ? null : t.parseJSON(e))
        } catch (r) {
						n = r
        }
					n ? s(n, "parsererror", T, i, u) : a(e, T, i, u)
        } else s(T.statusText || null, T.status ? "error" : "abort", T, i, u)
        }
        }, o(T, i) === !1) return T.abort(), s(null, "abort", T, i, u), T;
        if (i.xhrFields) for (v in i.xhrFields) T[v] = i.xhrFields[v];
        var C = "async" in i ? i.async : !0;
        T.open(i.type, i.url, C, i.username, i.password);
        for (v in w) N.apply(T, w[v]);
        return i.timeout > 0 && (g = setTimeout(function () {
            T.onreadystatechange = c, T.abort(), s(null, "timeout", T, i, u)
        }, i.timeout)), T.send(i.data ? i.data : null), T
    }, t.get = function () {
        return t.ajax(p.apply(null, arguments))
    }, t.post = function () {
        var e = p.apply(null, arguments);
        return e.type = "POST", t.ajax(e)
    }, t.getJSON = function () {
        var e = p.apply(null, arguments);
        return e.dataType = "json", t.ajax(e)
    }, t.fn.load = function (e, n, r) {
        if (!this.length) return this;
        var i, o = this,
			a = e.split(/\s/),
			s = p(e, n, r),
			u = s.success;
        return a.length > 1 && (s.url = a[0], i = a[1]), s.success = function (e) {
            o.html(i ? t("<div>").html(e.replace(x, "")).find(i) : e), u && u.apply(o, arguments)
        }, t.ajax(s), this
    };
    var N = encodeURIComponent;
    t.param = function (e, n) {
        var r = [];
        return r.add = function (e, n) {
            t.isFunction(n) && (n = n()), null == n && (n = ""), this.push(N(e) + "=" + N(n))
        }, d(r, e, n), r.join("&").replace(/%20/g, "+")
    }
}(Zepto), function (t) {
    function e(t, e, n, r) {
        return Math.abs(t - e) >= Math.abs(n - r) ? t - e > 0 ? "Left" : "Right" : n - r > 0 ? "Up" : "Down"
    }
    function n() {
        l = null, h.last && (h.el.trigger("longTap"), h = {})
    }
    function r() {
        l && clearTimeout(l), l = null
    }
    function i() {
        s && clearTimeout(s), u && clearTimeout(u), c && clearTimeout(c), l && clearTimeout(l), s = u = c = l = null, h = {}
    }
    function o(t) {
        return ("touch" == t.pointerType || t.pointerType == t.MSPOINTER_TYPE_TOUCH) && t.isPrimary
    }
    function a(t, e) {
        return t.type == "pointer" + e || t.type.toLowerCase() == "mspointer" + e
    }
    var s, u, c, l, f, h = {},
		p = 750;
    t(document).ready(function () {
        var d, m, v, g, y = 0,
			x = 0;
        "MSGesture" in window && (f = new MSGesture, f.target = document.body), t(document).bind("MSGestureEnd", function (t) {
            var e = t.velocityX > 1 ? "Right" : t.velocityX < -1 ? "Left" : t.velocityY > 1 ? "Down" : t.velocityY < -1 ? "Up" : null;
            e && (h.el.trigger("swipe"), h.el.trigger("swipe" + e))
        }).on("touchstart MSPointerDown pointerdown", function (e) {
            (!(g = a(e, "down")) || o(e)) && (v = g ? e : e.touches[0], e.touches && 1 === e.touches.length && h.x2 && (h.x2 = void 0, h.y2 = void 0), d = Date.now(), m = d - (h.last || d), h.el = t("tagName" in v.target ? v.target : v.target.parentNode), s && clearTimeout(s), h.x1 = v.pageX, h.y1 = v.pageY, m > 0 && 250 >= m && (h.isDoubleTap = !0), h.last = d, l = setTimeout(n, p), f && g && f.addPointer(e.pointerId))
        }).on("touchmove MSPointerMove pointermove", function (t) {
            (!(g = a(t, "move")) || o(t)) && (v = g ? t : t.touches[0], r(), h.x2 = v.pageX, h.y2 = v.pageY, y += Math.abs(h.x1 - h.x2), x += Math.abs(h.y1 - h.y2))
        }).on("touchend MSPointerUp pointerup", function (n) {
            (!(g = a(n, "up")) || o(n)) && (r(), h.x2 && Math.abs(h.x1 - h.x2) > 30 || h.y2 && Math.abs(h.y1 - h.y2) > 30 ? c = setTimeout(function () {
                h.el.trigger("swipe"), h.el.trigger("swipe" + e(h.x1, h.x2, h.y1, h.y2)), h = {}
            }, 0) : "last" in h && (30 > y && 30 > x ? u = setTimeout(function () {
                var e = t.Event("tap");
                e.cancelTouch = i, h.el.trigger(e), h.isDoubleTap ? (h.el && h.el.trigger("doubleTap"), h = {}) : s = setTimeout(function () {
                    s = null, h.el && h.el.trigger("singleTap"), h = {}
                }, 250)
            }, 0) : h = {}), y = x = 0)
        }).on("touchcancel MSPointerCancel pointercancel", i), t(window).on("scroll", i)
    }), ["swipe", "swipeLeft", "swipeRight", "swipeUp", "swipeDown", "doubleTap", "tap", "singleTap", "longTap"].forEach(function (e) {
        t.fn[e] = function (t) {
            return this.on(e, t)
        }
    })
}(Zepto);